/*
*
* 版权所有 Copyleft(c) 2005
* 刘炯个人工作室 Sharp-Mark Personal Studio
*
* 允许自由使用，复制，修改，传播和贩卖此源程序及其文档，而不必支付任何费用。
* 以上的版权信息必须出现在每一份复制品中。同时这份版权信息和许可声明
* 也必须出现在支持文档中。刘炯个人工作室不对此软件适于那种具体
* 用途做出任何阐述。此代码只作为代码本身提供对其品质不做任何保证。
*
*/
#pragma once
#include "../Utilities/Vectors.h"

template <class T>
class CRectangle3D
{

public:
	CRectangle3D()
	{
		CRectangle3D(0, 0, 0, 0, 0, 0, 0, 0, RGB(0, 0, 0));
	}

	CRectangle3D(const CVec4<T>* vertices, COLORREF color = RGB(0, 0, 0)) : _color(color)
	{
		for (int i = 0; i < 4; i++)
		{
			_tagetVertex[i] = _rectVertex[i] = vertices[i];
		}
	}

	CRectangle3D(
		T x0, T y0,		// left top
		T x1, T y1,		// right top
		T x2, T y2,		// left bottom
		T x3, T y3,		// right bottom
		COLORREF color = RGB(0, 0, 0))	// rect color
		: _color(color)
	{
		if( CheckVertexCurrent() )
		{
			_targetVertex[0] = _rectVertex[0] = CVec4<T>(x0, y0);
			_targetVertex[1] = _rectVertex[1] = CVec4<T>(x1, y1);
			_targetVertex[2] = _rectVertex[2] = CVec4<T>(x2, y2);
			_targetVertex[3] = _rectVertex[3] = CVec4<T>(x3, y3);
		}
		else
		{
			_rectVertex[0] = _rectVertex[1] = _rectVertex[2] = _rectVertex[3] = 0;
		}
	}

	~CRectangle3D(){/* do nothing. */}

	COLORREF& Color()
	{
		return _color;
	}

	void ZBufferDraw(T z, CPaintDC& dc)
	{
		// for each point in this rect
		// if (z > )
		{
		}
	}

private:
	bool CheckVertexCurrent(){ return true; }
	CVec4<T> _targetVertex[4];
	CVec4<T> _rectVertex[4];
	COLORREF _color;
};